Классы в Python: практика
В этом уроке вы поработаете с модулем выдачи квестов. Часть кода уже написана, вам нужно доработать его с учётом парадигмы ООП.
3.
Выведите на печать содержимое объекта класса
Quest.Для этого переопределите метод
__str__ в классе Quest. По умолчанию он должен возвращать строку 'Цель квеста {название_квеста} - {цель_квеста}.'.При определённых условиях строка должна выглядеть иначе:
- если квест уже завершён —
'Цель квеста {название_квеста} - {цель_квеста}. Квест завершён.'; - если квест уже принят на исполнение —
'Цель квеста {название_квеста} - {цель_квеста}. Квест выполняется.'.
Подсказка
- Метод для печати объекта —
__str__. - Чтобы дополнить исходную строку, используйте конкатенацию.
Код
xxxxxxxxxx52
1
import datetime as dt2
import time3
4
class Quest:5
def __init__(self, name, description, goal):6
self.name = name7
self.description = description8
self.goal = goal9
self.start_time = None10
self.end_time = None11
12
def accept_quest(self):13
if self.end_time:14
return 'С этим испытанием вы уже справились.'15
self.start_time = dt.datetime.now()16
return f'Начало квеста "{self.name}" положено.'17
18
def pass_quest(self):19
if not self.start_time:20
return 'Нельзя завершить то, что не имеет начала!'21
self.end_time = dt.datetime.now()22
completion_time = self.end_time - self.start_time23
return (f'Квест "{self.name}" окончен.'24
f' Время выполнения квеста: {completion_time}')25
26
# Напишите код метода __str__.27
28
29
30
quest_name = 'Сбор пиксельники'31
quest_goal = 'Соберите 12 ягод пиксельники.'32
quest_description = '''33
В древнем лесу Кодоборье растёт ягода "пиксельника".34
Она нужна для приготовления целебных снадобий.35
Соберите 12 ягод пиксельники.'''36
37
new_quest = Quest(quest_name, quest_description, quest_goal) 38
39
print(new_quest.pass_quest())40
print(new_quest.accept_quest())41
time.sleep(3)42
print(new_quest.pass_quest())43
print(new_quest.accept_quest())44
45
# Печатаем объекта класса Quest:46
print(new_quest)